Video Format for Digital Video Recorder

ABSTRACT

Some embodiments provide a video camera. The video camera includes image sensing circuitry for capturing a sequence of video pictures, a user interface for allowing a user to select a video encoding format from a temporally compressed encoding format and non-temporally compressed encoding format, encoding circuitry for encoding the video pictures according to the format selected by the user, and random access storage for storing video clips. 
     Some embodiments provide a video editing application for a computer. The application includes a first module for (i) receiving video clips stored on the video camera and (ii) storing a first set of video clips that are non-temporally compressed on the video camera in a storage of the computer, and a second module for (i) transcoding a second set of video clips that are temporally compressed on the video camera and (ii) storing the transcoded second set of video clips in the storage.

CLAIM OF BENEFIT TO PRIOR APPLICATION

This application claims the benefit of U.S. Provisional Application61/241,394, entitled “Video Format for Digital Video Recorder”, filedSep. 10, 2009, which is incorporated herein by reference.

FIELD OF THE INVENTION

The invention is directed towards video recording. Specifically, theinvention is directed towards a video format for a digital videorecorder.

BACKGROUND OF THE INVENTION

Digital video recorders are commonly used to record digital video fortransfer to a computer. Once on the computer, users may edit, enhance,and share the digital video. However, today's digital video recorderscompress digital video using forms of encoding that use temporalcompression. That is, the compressed video includes predictive (P) andbidirectional (B) frames that are not actual images, and instead areonly mathematical data representing the difference between an index (I)frame that is encoded as an image.

Temporal compression enables compression of digital video to smallerfile sizes on the camera, but creates a multitude of problems for usersthat want to transfer the video to their computers in order to work withthe video. Because the P and B frames are only defined by reference toother frames, they must be transcoded in order for a user to edit them.This transcoding generally takes place upon import of the digital videofrom the camera.

FIG. 1 illustrates a prior art system with a video camera 105 and acomputer 110. The video camera 105 captures and stores a video file 115having a size X. This video is encoded using temporal compression. Upontransfer from camera 105 to computer 110, the video must be transcoded(to remove the temporal compression) and stored. The resulting file 120has a size of 3X to 10X, and thus is much larger than the original fileon the camera. Because of these expansions, it does not take that muchvideo for the size of the file to become prohibitive for most users.Furthermore, the transcoding is a time- and computation-intensiveprocess. Transferring 30 minutes of video can take 90 minutes due to thetranscoding. Accordingly, there exists a need for a video camera withthe capability to record video that is not temporally compressed withoutsacrificing quality or creating excessively large file sizes.

SUMMARY OF THE INVENTION

Some embodiments of the invention provide a video recording device(e.g., a video camera) that captures and stores digital video in aformat that is not temporally compressed. The captured digital video isstored at a desired particular resolution and/or bit rate whilemaintaining a desired video quality.

When the digital video is exported from the recording device to acomputer (e.g., for editing, sharing, etc.), the video is transferredquickly with no transcoding necessary. Transcoding, in some embodiments,involves decoding the video upon import to remove any temporalcompression and then re-encoding the video without temporal compression.As such, when the video does not need to be transcoded, the digitalvideo is stored on the computer in its native format.

In some embodiments, the video recording device provides users with anoption of storing video that is either temporally compressed or nottemporally compressed. The temporally compressed video includesinterframe encoded video pictures (e.g., frames) that are encoded atleast partially by reference to one or more other video pictures. Thenon-temporally compressed video includes only intraframe encoded videopictures (e.g., frames) that are encoded without reference to any othervideo pictures.

Some embodiments include non-temporally compressed enhanced-definitionand/or high-definition formats at a manageable bit rate. The variousvideo formats are presented through a user interface of the digitalvideo recorder. In some embodiments, the various different video formatsall use the same encoding standard. That is, the temporally compressedand non-temporally compressed formats use the same encoding standard.

Some embodiments provide a media-editing application with the capabilityto recognize the format of incoming video. When incoming digital video(e.g., from a video recording device as described above) is temporallycompressed, the media-editing application transcodes the digital video.When the digital video is not temporally compressed, the media-editingapplication stores the video without transcoding or expanding the sizeof the video. Thus, the non-temporally compressed digital video can beimported very quickly because there is no transcoding.

BRIEF DESCRIPTION OF THE DRAWINGS

The novel features of the invention are set forth in the appendedclaims. However, for purpose of explanation, several embodiments of theinvention are set forth in the following figures.

FIG. 1 illustrates a prior art system with a video camera and acomputer.

FIG. 2 illustrates a system of some embodiments that includes a digitalvideo camera and a computer.

FIG. 3 illustrates a sequence of digital video pictures that are encodedusing temporal compression.

FIG. 4 illustrates a sequence of digital video pictures that is encodedwithout using temporal compression.

FIG. 5 illustrates a user interface of a video camera of someembodiments that allows a user to select a video format option for acaptured video.

FIG. 6 illustrates a user interface of a video camera of someembodiments that allows a user to specify bit rate settings for acaptured video.

FIG. 7 illustrates the software architecture of a digital video cameraof some embodiments for capturing, encoding, and storing digital video.

FIG. 8 conceptually illustrates a process of some embodiments forcapturing and storing video on a digital video camera that has thecapability to store either temporally compressed or non-temporallycompressed video.

FIG. 9 illustrates a block diagram of a video camera of some embodimentsthat utilizes video capture, encoding, and storage process of FIG. 8.

FIG. 10 illustrates a media-editing application of some embodiments forimporting and editing digital video that has the ability todifferentiate between different formats of incoming digital video.

FIG. 11 conceptually illustrates a process of some embodiments forstoring a video clip imported into a computer from a digital videosource.

FIG. 12 illustrates a computer system with which some embodiments of theinvention are implemented.

DETAILED DESCRIPTION OF THE INVENTION

In the following description, numerous details are set forth for purposeof explanation. However, one of ordinary skill in the art will realizethat the invention may be practiced without the use of these specificdetails. For instance, some of the examples illustrate specific encodingmodules. One of ordinary skill in the art will recognize that differentencoding modules are possible without departing from the invention.

Some embodiments of the invention provide a video recording device thatcaptures and stores digital video in a format that is not temporallycompressed. The captured digital video is stored at a desired particularresolution and/or bit rate while maintaining a desired video quality.When the digital video is exported from the camera to a computer, thedigital video is stored on the computer in its native format with notranscoding.

FIG. 2 illustrates a system including a digital video camera 205 and acomputer 210. The digital video camera captures and stores a video file215 that has a size Y. The video file 215 is not temporally compressed.That is, each digital video picture (i.e., frame or field) in the videofile is encoded without reference to other digital video pictures. FIGS.3 and 4, described below, illustrate different frame types. Thenon-temporally compressed video clip is transferred (e.g., via USB,FireWire, or other wired or wireless connection) from the video camera205 to the computer 210. As described below, the computer 210 mayinclude a media-editing application for editing and enhancing the video.The computer 210 stores the video clip in its native format as videofile 220. This video file 220 has the same size Y as the video file 215on the camera.

No transcoding need be performed upon import as there is no temporalcompression to remove. Not only does this result in the file having thesame size, but the transfer time is only limited by the size of the fileand the speed of the connection between the camera 205 and the computer210. When transcoding needs to be performed, the promise of fastertransfer that is supposed to come with random access camera storage(i.e., hard disks, flash memory, etc.) is nullified by the slowtranscoding process.

As mentioned above, the video recording device of some embodimentsstores digital video in a format that is not temporally compressed. Thenon-temporally compressed video includes only intraframe encoded digitalvideo pictures (e.g., frames) that are encoded without reference to anyother digital video pictures. By comparison, FIG. 3 illustrates asequence 300 of digital video pictures that is temporally compressed.Temporally compressed video includes interframe encoded digital videopictures (e.g., frames) that are encoded at least partially by referenceto one or more other video pictures. FIG. 3 illustrates I-frames (indexframes that are not encoded by reference to any other frames), P-frames(predictive frames that are encoded by reference to previous frames),and B-frames (bidirectional frames that are encoded by reference toprevious and future frames).

The sequence 300 includes an I-frame, then two B-frames, then a P-frame,then two more B-frames, etc. The sequence from the I-frame 305 throughthe fifteenth total frame is known in some embodiments as a Group ofPictures (GOP). In this case, the GOP size is fifteen. Each GOP startswith an I-frame.

Some embodiments, rather than using I-, P-, and B-frames for temporalcompression, use I-, P-, and B-slices. Each digital video picture (e.g.,frame) of some embodiments includes numerous macroblocks, each of whichis a 16×16 array of pixel values. A slice is a group of consecutivemacroblocks. Rather than determine how to encode the macroblocks on apicture-by-picture basis, some embodiments make this decision on aslice-by-slice basis instead.

FIG. 4 illustrates the case in which a sequence of video pictures 400 isnot temporally compressed. Instead, every video picture in the sequence400 is an I-frame, defined without reference to the other frames.Although this format is not as compressed on the camera as that ofsequence 300, sequence 400 does not need to be transcoded upon transferto a computer and can be edited much more easily than a temporallycompressed sequence.

Some embodiments provide a media-editing application with the ability torecognize the format of incoming digital video. The media-editingapplication only transcodes the digital video if the video is temporallycompressed. When the digital video is not temporally compressed, themedia-editing application stores the video without transcoding orexpanding the size of the video.

I. Digital Video Camera

As noted above, some embodiments provide a video recording device (e.g.,a digital video camera) that captures and stores digital video in aformat that is not temporally compressed. Some embodiments provide userswith the option of recording video that is either temporally compressedor not temporally compressed. This option is presented in the userinterface of the video camera in some embodiments.

FIG. 5 illustrates a user interface of a video camera that allows a userto select a video format option for a captured video. Specifically, thisfigure shows the user interface of the video camera at two differentstages: a first stage that is before a user's selection of the iFramevideo format option and a second stage that is after its selection. Asshown, the video camera 500 includes a user interface 505 with a displayscreen 510 for displaying a graphical user interface (GUI) that includesa menu 515. The graphical user interface may be entirely textual,entirely graphical, or a combination thereof. The user interface 505also includes several user-selectable controls 520 and 525.

The menu 515 displays a list of video format options. These optionsinclude several iFrame (i.e., non-temporally compressed) options atdifferent resolutions (i.e., iFrame 960×540, iFrame 1280×720) andseveral temporally compressed format options. The format options in themenu range from high definition to enhanced definition; however, themenu may exclude one or more options or include other options (e.g.,iFrame 640×480). Some embodiments only include one non-temporallycompressed option (e.g., 960×540).

As mentioned above, some embodiments provide a 960×540 iFrame recordingformat option. This recording format has a vertical resolution of 540 p.This resolution is advantageous for a number of reasons, one of which isthat often the resolution corresponds to the native resolution of thecamera's sensor and can be easily upconverted (e.g., by a computer usedto edit the video) to HD standards such as 720 p, 1080 i, or 1080 p.

The user-selectable controls 520 and 525 on the video camera allow auser to navigate the menu 515. In particular, the controls 520 are fornavigating the menu 515 vertically, while controls 525 are fornavigating the menu horizontally. In the example illustrated in FIG. 5,these controls are provided as physical controls on the video camera.However, in some embodiments, such navigation controls may be providedas part of the graphical user interface displayed on a display screen.Alternatively, or conjunctively, the video camera 500 may be equippedwith a touch screen that allows the user to directly select a videoformat option using the touch screen without having to use such physicalcontrols as controls 520 and 525.

The operations of the user interface will now be described by referenceto the two different stages that are illustrated in FIG. 5. In the firststage, the display screen 510 displays the menu 515. The currentlyselected recording format is a temporally compressed option (1080 p). Auser of the video camera interacts with the menu 515 through thecontrols 520 and 525. Specifically, the user selects the top control ofcontrols 520 in order to move the selected option upwards by one item inthe menu and change the video format option from a temporally compressedformat to an iFrame format.

As shown in stage two, once the user selects the top control of controls520, the menu 515 highlights the iFrame format option (i.e., iFrame960×540). This highlighting provides the user with a visual indicationof the selection of the iFrame format option. Now that the user hasselected the iFrame format option, subsequently captured video clipswill be recorded without temporal compression at the specifiedresolution.

In the previous example, the menu 515 displays a list of different videoformat options for encoding a sequence of captured video frames usingdifferent encoding schemes and resolution. In some embodiments, the menu515 displays one or more other options for specifying other encodingformats. FIG. 6 illustrates the user interface 505 that allows a user tospecify not only resolution and encoding scheme but also bit rate. Thebit rate for video, in some embodiments, is the size of the video fileper playback time. In general, higher bit rate will lead to higherquality video if the resolution is kept equal. However, higher bit ratesalso mean larger files, which can be cumbersome for a user to work with.

This figure is similar to the previous figure; however, the menu 515displays multiple iFrame format options at the same resolution withdifferent bit rate settings. Specifically, the menu 515 displays twodifferent bit rate settings (i.e., two of 24 Mbps, 20 Mbps, or 16 Mbps)for each of the two iFrame resolutions (i.e. iFrame 960×540, iFrame1280×720). As shown, without changing the iFrame resolution, the userselects the bottom control of controls 520 to change the bit ratesetting from 24 Mbps to 16 Mbps. In some embodiments, a media-editingapplication to which the camera will eventually transfer the video has amaximum specified bit rate (e.g., 24 Mbps). In some embodiments, themenu 515 of the video camera may allow a user to select other videoencoding options. For example, the menu 515 may display selectable framerate options (e.g., 25 or 30 frames per second).

FIG. 7 illustrates the software architecture of a digital video camera700 for capturing, encoding, and storing digital video. Digital videocamera 700 includes a user interface 705, a video compression controller710, a discrete cosine transform (DCT) unit 715, a quantizer unit 720,an entropy encoder 725, an inverse quantizer unit 730, an inversediscrete cosine transform (IDCT) unit 735, a motion compensation, motionestimation, and intra-frame prediction unit 740, an adder 745, and animager 750.

The camera also includes a storage for compression settings 755 and avideo storage 760. In some embodiments, the two storages are the samephysical storage. In other embodiments, the two storages are separatephysical storages in the camera or are different partitions of the samephysical storage. The video storage 760 is a digital tape in someembodiments. In other embodiments, video storage 760 is a random accessstorage, such as magnetic disk storage (e.g., hard disk) or solid-statememory (e.g., flash memory). When the storage 760 is a random accessstorage, a user (e.g., a user of a computer to which the video camera isattached) can choose to access a second video clip before a first videoclip, even if the second video clip is recorded after the first videoclip.

The user interface 705 of camera 700 includes both the graphical userinterface as illustrated on display 510 in the preceding figures as wellas user input controls such as controls 520 and 525 illustrated in thesame figures. The graphical user interface may be a text-only interfaceor may include graphics as well.

As illustrated above, users input format selection information throughthe user interface 705. By choosing a compression type (temporal ornon-temporal), a resolution, and/or a bit rate, the user determines theformat for subsequently recorded video. This format selectioninformation 765 is transferred from the user interface to the videocompression controller 710.

The video compression controller 710 instructs the various compressionand encoding modules how to perform encoding for the specified format.The video compression controller extracts compression settings fromstorage 755 based on the selected format. These compression settings arethen transferred to the various compression and encoding modules so thatthey can properly encode the video in the specified format. FIG. 7illustrates that the video compression controller instructs the DCT unit715, the quantizer unit 720, the entropy encoder 725, and the motionestimation, motion compensation, and intra-frame prediction unit 740. Insome embodiments, information similar to that given to the DCT andquantizer units 715 and 720 is also passed to inverse quantizer and IDCTunits 730 and 735.

Imager 750 captures video. For more detail on the video capture process,refer below to FIG. 9. In some embodiments, the video is captured at arate of 25 or 30 frames per second. This is a user option in someembodiments and a non-changeable setting in other embodiments. Eachcaptured frame is essentially an image captured by the video camera. Acaptured frame is sent from the imager to the compression and encodingmodules 715-745 so that the frame can be encoded.

DCT unit 715 performs discrete cosine transforms on blocks of image dataresulting from the addition or subtraction performed at the adder 745.The discrete cosine transform operation achieves compression by removingsome spatial redundancy that exists within a block of image data. Theoperation transforms a block of image data into a two dimensional arrayof DCT coefficients in which most of the energy of the block istypically concentrated in a few low frequency coefficients.

Quantizer unit 720 applies quantization on the DCT coefficients producedby the DCT unit 715. The quantization operation achieves compression ofthe DCT coefficients by compressing a range of values to a singlequantum value. Quantization causes loss of quality, and thus someembodiments use a quantization matrix to minimize loss of image qualityby assigning smaller quantization steps to certain frequencies of DCTcoefficients.

Entropy encoder 725 converts input data into variable length codes. Insome embodiments, the input data comes directly from the quantizer unit720. In other embodiments, intermediate operations such as zig-zagscanning and run-length encoding are performed between the quantizerunit 720 and entropy encoder 725. The entropy encoder 725 of someembodiments achieves compression by assigning shorter length code wordsto values that have a higher probability of occurring than for valuesthat have a lower probability of occurring (e.g., Context-based AdaptiveVariable Length Coding). Some embodiments use coding schemes such asHuffman or UVLC in which entropy coding is performed on a symbol bysymbol basis. Other embodiments use coding schemes such as arithmeticcoding in which an entire block of data is encoded as a single number(e.g., Context-based Adaptive Binary Arithmetic Coding). The entropyencoder outputs an encoded frame which can be stored in video storage760.

Some embodiments perform spatial or temporal prediction to achievefurther compression of video images. To facilitate this, someembodiments include a video decoding path so the encoder can use thesame decoded reference frames used by a decoder to perform prediction.The decoding path includes inverse quantizer unit 730 and inverse DCTunit 735; these units perform the inverse operations of quantizer unit720 and DCT unit 715 as described above.

The motion estimation, motion compensation, and intra-frame predictionunit 740 performs motion estimation, motion compensation, andintra-frame prediction operations. The motion compensation operation ispart of the decoding path; it uses temporal prediction information tocompensate the output of the inverse DCT unit 735 in order toreconstruct and decode a video image. The motion estimation operation ispart of the encoding path; it searches other decoded frames for amatching block of pixels to create motion vectors for use in temporalprediction. Intra-frame prediction has an encoding component and adecoding component. The decoding component of the intra-frame predictionoperation uses spatial prediction information to reconstruct and decodea video image. The encoding component of the intra-frame predictionoperation searches the current decoded frame for a matching block ofpixels for use in spatial prediction. In some embodiments, the unit 740will only perform spatial intra-frame prediction when instructed to notperform temporal compression.

The adder 745 computes the difference between the image from the imager750 and the output of the motion estimation, motion compensation andintra-frame prediction unit 740. The resulting difference (or summation)is then sent to DCT unit 715 to be encoded as mentioned above.

The operation of each of the DCT, quantizer, and entropy encoder units715-725 is determined by numerous different variables. Each of thesevariables may be set differently depending on the specified videoformat. Thus, the DCT operation is controlled not by one particularsetting in some embodiments, but rather by a multitude of differentchoices. In some embodiments, these are design choices by the cameramanufacturer that are intended to maximize video quality at a particularresolution and bit rate. Similarly, the quantizer and entropy encoderoperations are also controlled by a multitude of different choices insome embodiments that are design choices for each particular formatintended to maximize video quality at the particular resolution and bitrate. For example, the quantization matrix used by the quantizer may bemodified based on the video format.

When the video compression controller 710 specifies settings fornon-temporally compressed video, the motion estimation, motioncompensation, and intra-frame prediction unit 740 is instructed to onlyperform intra-frame prediction rather than the motion estimation andmotion compensation operations that are part of temporal compression. Onthe other hand, when the video compression controller specifies settingsfor temporally compressed video, unit 740 performs motion estimation andmotion compensation in addition to intra-frame prediction.

Furthermore, in some embodiments the video compression controller 710performs rate control during the encoding process in addition tospecifying the encoding variables to the different modules. To performrate control, the controller 710 calculates, after the encoding of eachframe, the proximity of the encoded video picture to a target bit rate(i.e., the specified bit rate for the video format). The controller 710then adjusts the compression variables (e.g., the variables of the DCTunit 715 and quantizer unit 720) on the fly to adjust the size of theto-be-encoded frame. In some embodiments, the manner in which thesechanges are made are part of the compression settings specified by theselected video format.

While many of the features of camera 700 have been described as beingperformed by one module (e.g., the video compression controller 710),one of ordinary skill would recognize that the functions might be splitup into multiple modules, and the performance of one feature might evenrequire multiple modules. Similarly, features that are shown as beingperformed by separate modules might be performed by one module in someembodiments.

FIG. 8 conceptually illustrates a process 800 of some embodiments forcapturing and storing video on a digital video camera that has thecapability to store either temporally compressed or non-temporallycompressed video (e.g., camera 700). Process 800 begins by identifying(at 805) a selected video format for captured video that specifies aparticular resolution and/or bit rate. This video format is selected bya user in some embodiments through a user interface, as illustrated inFIGS. 5 and 6.

Process 800 determines (at 810) whether to perform temporal compressionon a video clip that is presently being captured. This determination ismade based on the selected video format. When the user has selected aniFrame recording mode, no temporal compression is performed. On theother hand, when the user has selected a different recording mode (e.g.,AVC HD 1080 p), temporal compression is required.

When temporal compression is required, the process receives (at 815) thenext captured video picture. The process then compresses (at 820) thevideo picture both spatially and temporally and encodes (at 820) thevideo picture. This operation is performed by the various encodingmodules 715-745 in some embodiments. The process then stores (at 825)the encoded video picture in a storage of the camera. Next, process 800determines (at 830) whether the camera is still capturing video (thatis, whether there are any more frames of video to compress and encode).When the camera is no longer capturing video, the process ends.Otherwise, the process returns to 815 to receive the next captured videopicture.

When temporal compression is not required for the presently capturedvideo clip, the process receives (at 835) the next captured videopicture. The process then compresses (at 840) the video picturespatially. In some embodiments, this operation is performed by unit 740,though only intra-prediction is used. As the video picture is not beingcompressed temporally, no motion estimation or motion compensation needbe performed.

Next, process 800 performs (at 845) a discrete cosine transform on thevideo picture using variable according to the selected format. That is,the discrete cosine transform is performed using variables sent to thediscrete cosine transform unit 715 by the video compression controller710 in some embodiments. These are variables selected (in someembodiments, as a design choice by the camera manufacturer) to producehigh-quality video at a desired resolution and/or bit rate withoutperforming temporal compression on the video.

The process then quantizes (at 850) the video picture (the output of theDCT unit) using variables according to the selected format. That is, thequantization is performed using variables sent to the quantizer unit 720by the video compression controller 710 in some embodiments. These arevariables selected (in some embodiments, as a design choice by thecamera manufacturer) to produce high-quality video at a desiredresolution and/or bit rate without performing temporal compression onthe video.

The process then entropy encodes (at 855) the video picture (the outputof the quantizer unit and any intermediate modules such as a run-lengthencoder) using variables according to the selected format. That is, theentropy encoding is performed using variables sent to the entropyencoder 725 by the video compression controller 710 in some embodiments.These are variables selected (in some embodiments, as a design choice bythe camera manufacturer) to produce high-quality video at a desiredresolution and/or bit rate without performing temporal compression onthe video.

Process 800 next stores (at 860) the encoded video picture in a storageof the camera. Next, process 800 determines (at 865) whether the camerais still capturing video (that is, whether there are any more frames ofvideo to compress and encode). When the camera is no longer capturingvideo, the process ends. Otherwise, the process returns to 835 toreceive the next captured video picture.

FIG. 9 illustrates a block diagram of a video camera 900 of someembodiments that utilizes the above-described video capture, encodingand storage process. Video camera 900 may be the same as video camera700, or may be different in one or more respects. As shown in FIG. 9,the video camera 900 includes an optical intake 905, an image sensingcircuitry 910, a video encoder 920, and a storage device 930. The videocamera in some embodiments further includes a data transfer port 935, avideo decoder 940, a digital viewer 945, and a user input control 950.

Optical images of the outside world enter the video camera 900 throughthe optical intake 905. In some embodiments, the optical intake 905includes an aperture and one or more optical lenses. The lenses performfocus, optical zoom or other optical processes on the optical images.

An optical image from the optical intake 905 is projected onto the imagesensing circuitry 910, which converts the optical image into electronicsignals. In some embodiments, the image sensing circuitry 910 is acharge-coupled device (CCD). A CCD includes a photo active region thatincludes a two dimensional capacitor array, in which capacitorsaccumulate electrical charges proportional to the intensity of the lightreceived. Once the array has been exposed to the optical image, acontrol circuit causes each capacitor to transfer its content to itsneighbor or to a charge amplifier, which converts the charge into avoltage. By repeating this process, the CCD samples and digitizes theoptical image.

A video encoder 920 encodes the digitized optical image. Someembodiments implement the video encoder 920 as a microprocessorexecuting a set of instructions. Other embodiments implement the videoencoder 920 using one or more electronic devices such as applicationspecific integrated circuits (ASICs), field programmable gate arrays(FPGAs), or other types of circuits.

In some embodiments, the video encoder 920 is a H.264 MPEG-4 encoder,which uses prediction and discrete cosine transform to removeredundancies from the images. Some embodiments remove both spatial andtemporal redundancies, while other embodiments remove only spatialredundancies or do not remove any redundancy. Some embodiments of thevideo encoder further use entropy encoding to produce a compressedbitstream from the encoded image.

A storage device 930 stores the encoded image. In some embodiments, thestorage device 930 is a flash memory device, a hard disk or other typeof random access memory device capable of storing digital informationsuch as the encoded image. The storage device is removable (e.g., aremovable flash drive) in some embodiments. The stored encoded image canthen be transferred out of the video camera 900 using a data transferport 935.

The data transfer port 935 transfers image or other data between thestorage device 930 of the video camera 900 and an external device suchas computer. In some embodiments, the data transfer port 935 uses highthroughput protocols such as Universal Serial Bus (USB) or IEEE 1394interface (FireWire) to communicate with the computer. The data transferport 935 may also communicate with a computer using any other wired orwireless data communication protocol.

A user input control 950 allows a user to adjust settings of variouscomponents of the video camera 900. In some embodiments, the user inputcontrol 950 is implemented as physical buttons on the video camera.Alternatively, or conjunctively, some embodiments include a GUI, whichallows the user to navigate through various settings of the video cameragraphically. In some embodiments, the user input control 950 allows theuser to adjust the settings of video decoder 920. For example, a usermay set the video decoder to encode the image using any encoding modesincluded in the H.264 standard, or a user may set the video encoder 920to use only I-frames or other subsets of the H.264 standard.

Some embodiments include a video decoder 940 so a user may view theencoded image. The video decoder 940 is able to decode the image encodedby the video encoder 920 and stored on storage device 930. In someembodiments, the video decoder 940 is part of the video encoder 920because some embodiments of the video encoder 920 include a videodecoder in order to produce an H.264 compliant encoded video sequence.The digital viewer 945 displays the video image decoded by the videodecoder 940. In some embodiments, the digital viewer is implemented aspart of a GUI associated with user input control 950.

II. Media-Editing Application

Some embodiments provide a media-editing application for importing andediting digital video that has the ability to differentiate betweendifferent formats of incoming digital video. When temporally compresseddigital video is imported, the media-editing application transcodes thedigital video and stores the transcoded video in storage. Whennon-temporally compressed digital video is imported, the media-editingapplication recognizes this format and stores the incoming videodirectly into storage without transcoding.

FIG. 10 illustrates such a media-editing application 1000 of someembodiments. Some examples of such media-editing applications includeiMovie® and Final Cut Pro®, both sold by Apple Inc.® Media-editingapplication 1000 is on a computer 1005. In some embodiments, computer1005 may be a computer dedicated specifically to media-editing or may bea computer that includes numerous other programs (e.g., word processor,web browser, computer gaming applications, etc.).

In addition to media-editing application 1000, computer 1005 alsoincludes interface manager 1010 and capture module 1015, as well as astorage 1020. The interface manager 1010 receives a digital video streamfrom a digital video source. Camera 1025, described below, is oneexample of such a digital video source. In some embodiments, theinterface manager is an input driver (e.g., a FireWire input driver, aUSB input driver, etc.) that receives the video stream through a port ofthe computer (e.g., a FireWire port, a USB port, etc.) that is connectedto the digital video source (e.g., through a FireWire or USB cable,directly via a USB port, wirelessly, etc.).

The interface manager 1010 relays the received video stream to thecapture module 1015, which in some embodiments funnels the video streamfrom the low-level port manager (the interface manager 1010) to themedia-editing application 1000. In some embodiments, this capture module1015 is part of the QuickTime® Engine of Apple Inc.® In someembodiments, the capture module 1015 is actually a part of media-editingapplication 1000. Storage 1020 stores video clips received from thedigital video source. Storage 1020 is part of the media-editingapplication 1000 in some embodiments as well. For instance, storage 1020may be a library of the media-editing application. In other embodiments,the storage is, as shown, part of the computer 1005. Storage 1020 maystore more than just video clips in some embodiments. For instance,storage 1020 may also store executable or other files associated withthe media-editing application 1000 or other applications residing oncomputer 1005.

Media-editing application 1000 includes format recognition module 1030,transcoder 1035, and thumbnail generator 1040. One of ordinary skill inthe art will recognize that the media-editing application of someembodiments will include other modules not shown in this diagram, suchas editing modules, a rendering engine, etc.

Format recognition module 1030 receives a digital video clip fromcapture module 1015 upon import and identifies the format of the digitalvideo. In some embodiments, this identification determines whether thedigital video is temporally compressed. The format recognition module1030 examines metadata of the digital video clip in some embodiments inorder to identify the format (see the description of the structure of avideo clip below for further discussion of the metadata). In someembodiments, the metadata indicates whether the digital video is in aniFrame (non-temporally compressed) format or a different format thatuses temporal compression. In some embodiments, the format recognitionmodule is able to identify the formats of the various video clips assoon as the camera is connected to the computer 1005.

When the format recognition module 1030 identifies that the incomingdigital video clip is not temporally compressed and therefore does notneed to be transcoded, the format recognition module 1030 routes thevideo clip directly to storage 1020. As mentioned above, this may be thelibrary of the media-editing application 1000 or it may be a storage oncomputer 1005 that is shared by multiple applications. The speed ofimporting such a digital video clip is tied to the size of the videoclip file and the connection speed between the camera and the computerin some embodiments, and is not tied to transcoding of the clip orplayback speed of the clip. Specifically, because there is notranscoding, the import speed is not tied to the processing powerrequired for decoding and/or encoding. Furthermore, when the digitalvideo clip is stored in random access storage on the camera, the importspeed is not related to any playback speed of the video clip that is dueto reading from a tape-based storage which requires playback of the tapesuch that 30 minutes are required to import 30 minutes of video. Someembodiments, rather than directly routing the video clip to storage1020, decode the incoming video clip in order to remove spatialcompression.

When the format recognition module 1030 identifies that the incomingdigital video is temporally compressed, the digital video is routed totranscoder 1035. Transcoder 1035, in some embodiments, decodes thedigital video and re-encodes the video with only spatial compression.Thus, the output of the transcoder 1035 is non-temporally compressedvideo. This transcoding process will generally take substantially moretime than for a non-temporally compressed video clip of equivalentlength. In some embodiments, the transcoder decodes the video and doesnot re-encode it.

The transcoder output (non-temporally compressed video) is sent to thethumbnail generator 1040 in some embodiments. The thumbnail generator1040 generates thumbnails for each digital video picture in the videoclip. The thumbnails are stored in storage 1020 along with the videoclip. Some embodiments also send non-temporally compressed incomingvideo clips from the format recognition module 1030 to the thumbnailgenerator 1040 as an intermediate step before storage. Furthermore, someembodiments do not include a thumbnail generator and thus do not storethumbnails with the video clip.

As mentioned above, in some embodiments the digital video stream isreceived from a camera 1025. Camera 1025 may be a camera such as digitalvideo camera 700 in some embodiments. The camera 1025 includes atransfer module 1045 and a video clip storage 1050. The video clipstorage includes numerous video clips that are stored in differentformats. For instance, clip 1051 is stored in a non-temporallycompressed format, clip 1052 is stored in 720 p temporally compressedformat, and clip 1053 is stored in 1080 p temporally compressed format.As illustrated above in Section I, some embodiments allow a user toselect the recording format of each video clip captured by the camera.As illustrated in this figure and described below, some embodimentsstore the video format as metadata.

Transfer module 1045, in some embodiments, is an output driverassociated with an output port (e.g., a FireWire or USB port) of thecamera 1025. In some embodiments, a user interacting with the videocamera either through the user interface of the camera or the userinterface of media-editing application 1000 (when the camera isconnected to computer 1005) instructs the camera 1025 to transfer aparticular video clip to the media-editing application 1000. The clip isthen transferred to the computer 1005 via the transfer module 1045.

FIG. 10 also illustrates the format of video file 1055 of someembodiments that is stored on camera 1025. Video file 1055 is an exampleof a non-temporally compressed video clip. Video file 1055 includesvideo picture data 1060, Advanced Audio Coding (AAC) audio data 1065,and metadata 1070. The video picture data includes the non-temporallycompressed video frames in this example, and in the case of clip 1052would include temporally compressed video frame data. The AAC audio data1065 is a particular format of audio that is required by media-editingapplication in some embodiments. Other embodiments allow different formsof encoded audio data.

As illustrated, metadata 1070 includes video format type 1075, geotagdata 1080, a ‘colr’ atom 1085, and other metadata 1090. The video formattype 1075 indicates the encoding format of the video. That is, formattype 1075 indicates whether the video is in iFrame format(non-temporally compressed) and may also indicate the resolution and/orbit rate of the video. In some embodiments, the media-editingapplication 1000 requires that the bit rate be below a particularthreshold for iFrame format data (e.g., 24 Mbps) while maintaining aparticular threshold quality at a given resolution.

Geotag data 1080, in some embodiments, indicates GPS coordinates orother geographical location information about where the video clip wasshot. This information is based on a geolocator module (e.g., a GPSreceiver) in the camera. The ‘colr’ atom 1085 is used to properlyconvert between color spaces of different display devices in someembodiments. Specifically, the ‘colr’ atom indicates that a softwaregamma color space conversion should be used. The ‘nclc’ tag in the‘colr’ atom is used in some embodiments to identify that the color spaceconversion can go through either a software or hardware path (e.g., onplayback of the video clip).

Some embodiments store other metadata 1090 with the video clip as well.This metadata may include lighting information about the lighting whenthe video clip was captured, cadence and frame rate (e.g., 25, 30, etc.frames per second) information about the video clip, bit depth (e.g., 8bit) information, etc. In some embodiments, when the video clip istransferred to media-editing application 1000, metadata 1070 istransferred along with it and is used by the media-editing application.For instance, some embodiments of the format recognition module 1030determine the video format type from the metadata 1070.

Some embodiments of the media-editing application specify requirementsfor acceptable non-temporally compressed video. For instance, someembodiments specify that the video encoding and compression comport tothe H.264 encoding scheme using either Baseline, Main, or High Profileencoding. The different profiles are different sets of capabilities insome embodiments. Some embodiments also specify that the entropy encoderon the camera (e.g., unit 725 of FIG. 7) use either Context-basedAdaptive Variable Length Coding (CAVLC) or Context-based Adaptive BinaryArithmetic Coding (CABAC). Some embodiments specify other requirements,such as the frame rate (e.g., only 25 or 30 fps), the bit depth (e.g., 8bit), the file format (e.g., .mp4 or .mov), the color tagging (e.g.,that the ‘colr’ atom with the ‘nclc’ color parameter type must bepresent, maximum bit rate (e.g., 24 Mbps), etc.

FIG. 11 conceptually illustrates a process 1100 of some embodiments forstoring a video clip imported into a computer from a digital videosource such as camera 1025. The process 1100 is performed by amedia-editing application in some embodiments (e.g., application 1000).The process begins by receiving (at 1105) a video clip from the digitalvideo source. The receiving of the video clip may be initiated by a userof a computer selecting an import option in a user interface or dragginga video clip icon from a camera folder to a computer folder. Forinstance, when the video is stored on the camera in a random-accessstorage (e.g., hard disk, flash memory, etc.), a user can open a folderon the computer for the video camera and view an icon for each of thevideo files on the camera. The user can use a cursor controller to dragthe icon for a desired video clip to a folder on the computer in orderto initiate the transfer. The receiving of the video clip may also beautomatically initiated by the attachment of the camera to an input portof the computer, etc.

The process then identifies (at 1110) the video format of the videoclip. As mentioned above, in some embodiments, the video camera encodesand stores the video clip in a number of different formats. Forinstance, the video camera may encode the video clip by performing onlyspatial compression, or encode the video clip by performing both spatialand temporal compression. In some embodiments, the process identifiesthe video format based on metadata stored on the camera and transferredwith the video clip that indicates the video format. Other embodimentsrecognize the type of encoding by examining the video picture data.

Process 1100 then determines (at 1115) whether the video is temporallycompressed. This is based on the identification of the video format.When the video is not temporally compressed, the process stores (at1120) the video clip in its native format. That is, no transcoding isrequired when the video is not temporally compressed and the video clipcan be stored instantly without any processing.

When the video is temporally compressed, the process transcodes (at1125) the video to remove temporal compression. As described above, thetranscoding process of some embodiments decodes the video and thenre-encodes the video using only spatial compression. This transcodingoperation is computation-intensive and time-intensive. The process thenstores (at 1130) the transcoded video. After storing the video (eitherin native or transcoded format), process 1100 then ends.

III. Computer System

Many of the above-described features and applications are implemented assoftware processes that are specified as a set of instructions recordedon a computer readable storage medium (also referred to as computerreadable medium). When these instructions are executed by one or morecomputational element(s) (such as processors or other computationalelements like ASICs and FPGAs), they cause the computational element(s)to perform the actions indicated in the instructions. Computer is meantin its broadest sense, and can include any electronic device with aprocessor. Examples of computer readable media include, but are notlimited to, CD-ROMs, flash drives, RAM chips, hard drives, EPROMs, etc.The computer readable media does not include carrier waves andelectronic signals passing wirelessly or over wired connections.

In this specification, the term “software” is meant to include firmwareresiding in read-only memory or applications stored in magnetic storagewhich can be read into memory for processing by a processor. Also, insome embodiments, multiple software inventions can be implemented assub-parts of a larger program while remaining distinct softwareinventions. In some embodiments, multiple software inventions can alsobe implemented as separate programs. Finally, any combination ofseparate programs that together implement a software invention describedhere is within the scope of the invention. In some embodiments, thesoftware programs when installed to operate on one or more computersystems define one or more specific machine implementations that executeand perform the operations of the software programs.

FIG. 12 illustrates a computer system with which some embodiments of theinvention are implemented. Such a computer system includes various typesof computer readable media and interfaces for various other types ofcomputer readable media. One of ordinary skill in the art will also notethat the digital video camera of some embodiments also includes varioustypes of computer readable media. Computer system 1200 includes a bus1205, a processor 1210, a graphics processing unit (GPU) 1220, a systemmemory 1225, a read-only memory 1230, a permanent storage device 1235,input devices 1240, and output devices 1245.

The bus 1205 collectively represents all system, peripheral, and chipsetbuses that communicatively connect the numerous internal devices of thecomputer system 1200. For instance, the bus 1205 communicativelyconnects the processor 1210 with the read-only memory 1230, the GPU1220, the system memory 1225, and the permanent storage device 1235.

From these various memory units, the processor 1210 retrievesinstructions to execute and data to process in order to execute theprocesses of the invention. In some embodiments, the processor comprisesa Field Programmable Gate Array (FPGA), an ASIC, or various otherelectronic components for executing instructions. Some instructions arepassed to and executed by the GPU 1220. The GPU 1220 can offload variouscomputations or complement the image processing provided by theprocessor 1210. In some embodiments, such functionality can be providedusing CoreImage's kernel shading language.

The read-only-memory (ROM) 1230 stores static data and instructions thatare needed by the processor 1210 and other modules of the computersystem. The permanent storage device 1235, on the other hand, is aread-and-write memory device. This device is a non-volatile memory unitthat stores instructions and data even when the computer system 1200 isoff. Some embodiments of the invention use a mass-storage device (suchas a magnetic or optical disk and its corresponding disk drive) as thepermanent storage device 1235.

Other embodiments use a removable storage device (such as a floppy disk,flash drive, or ZIP® disk, and its corresponding disk drive) as thepermanent storage device. Like the permanent storage device 1235, thesystem memory 1225 is a read-and-write memory device. However, unlikestorage device 1235, the system memory is a volatile read-and-writememory, such a random access memory. The system memory stores some ofthe instructions and data that the processor needs at runtime. In someembodiments, the invention's processes are stored in the system memory1225, the permanent storage device 1235, and/or the read-only memory1230. For example, the various memory units include instructions forprocessing multimedia items in accordance with some embodiments. Fromthese various memory units, the processor 1210 retrieves instructions toexecute and data to process in order to execute the processes of someembodiments.

The bus 1205 also connects to the input and output devices 1240 and1245. The input devices enable the user to communicate information andselect commands to the computer system. The input devices 1240 includealphanumeric keyboards and pointing devices (also called “cursor controldevices”). The output devices 1245 display images generated by thecomputer system. The output devices include printers and displaydevices, such as cathode ray tubes (CRT) or liquid crystal displays(LCD).

Finally, as shown in FIG. 12, bus 1205 also couples computer 1200 to anetwork 1265 through a network adapter (not shown). In this manner, thecomputer can be a part of a network of computers (such as a local areanetwork (“LAN”), a wide area network (“WAN”), or an Intranet, or anetwork of networks, such as the internet. Any or all components ofcomputer system 1200 may be used in conjunction with the invention.

Some embodiments include electronic components, such as microprocessors,storage and memory that store computer program instructions in amachine-readable or computer-readable medium (alternatively referred toas computer-readable storage media, machine-readable media, ormachine-readable storage media). Some examples of such computer-readablemedia include RAM, ROM, read-only compact discs (CD-ROM), recordablecompact discs (CD-R), rewritable compact discs (CD-RW), read-onlydigital versatile discs (e.g., DVD-ROM, dual-layer DVD-ROM), a varietyof recordable/rewritable DVDs (e.g., DVD-RAM, DVD-RW, DVD+RW, etc.),flash memory (e.g., SD cards, mini-SD cards, micro-SD cards, etc.),magnetic and/or solid state hard drives, read-only and recordableBlu-Ray® discs, ultra density optical discs, any other optical ormagnetic media, and floppy disks. The computer-readable media may storea computer program that is executable by at least one processor andincludes sets of instructions for performing various operations.Examples of hardware devices configured to store and execute sets ofinstructions include, but are not limited to application specificintegrated circuits (ASICs), field programmable gate arrays (FPGA),programmable logic devices (PLDs), ROM, and RAM devices. Examples ofcomputer programs or computer code include machine code, such as isproduced by a compiler, and files including higher-level code that areexecuted by a computer, an electronic component, or a microprocessorusing an interpreter.

As used in this specification and any claims of this application, theterms “computer”, “server”, “processor”, and “memory” all refer toelectronic or other technological devices. These terms exclude people orgroups of people. For the purposes of the specification, the termsdisplay or displaying means displaying on an electronic device. As usedin this specification and any claims of this application, the terms“computer readable medium” and “computer readable media” are entirelyrestricted to tangible, physical objects that store information in aform that is readable by a computer. These terms exclude any wirelesssignals, wired download signals, and any other ephemeral signals.

While the invention has been described with reference to numerousspecific details, one of ordinary skill in the art will recognize thatthe invention can be embodied in other specific forms without departingfrom the spirit of the invention. In addition, a number of the figures(including FIGS. 8 and 11) conceptually illustrate processes. Thespecific operations of these processes may not be performed in the exactorder shown and described. The specific operations may not be performedin one continuous series of operations, and different specificoperations may be performed in different embodiments. Furthermore, theprocess could be implemented using several sub-processes, or as part ofa larger macro process.

1. A video editing application for editing video on a computer, theapplication comprising: a first module for identifying different videoclips that are stored on a video camera and that are encoded accordingto a plurality of different encoding formats; a second module for (i)receiving video clips stored on the video camera and (ii) storing afirst set of video clips that are only intraframe encoded on the videocamera in a storage of the computer; a third module for (i) transcodinga second set of video clips that are encoded at least partially in aninterframe format on the video camera and (ii) storing the transcodedsecond set of video clips in the storage.
 2. The application of claim 1,wherein the first module stores, in the storage of the computer, theintraframe encoded video clips in the same intraframe only format. 3.The application of claim 2, wherein the intraframe only format is anative format at which sequences in the video clips were originallyencoded by the video camera.
 4. The application of claim 2, wherein theintraframe only format is a format at which the video editingapplication allows a user to edit the video clips without performing anydecoding.
 5. The application of claim 1, wherein the intraframe encodedformat is defined by a resolution setting specifying at least one of960×540 and 1280×720, and a bit rate setting specifying up to 24 Mbps.6. The application of claim 1 further comprising an import module for(i) detecting that the video camera is coupled to the computer and (ii)importing the video clips stored in the video camera.
 7. The applicationof claim 6, wherein the first module automatically identifies aparticular video clip as an intraframe encoded video clip or aninterframe encoded video clip when a user directs the video editingapplication to import the particular video clip.
 8. A machine readablemedium storing instructions for importing video clips into a device thatincludes the machine readable medium, the instructions comprising setsof instructions for: detecting the connection of a video camera to thedevice; identifying a first video clip that is stored in the videocamera that is at least partially interframe encoded; transcoding thefirst video clip from a first format to a second format whiletransferring the video clip into the device; identifying a second videoclip that is stored in the video camera and that is only intraframeencoded; transferring the second video clip into the device withoutmodifying the encoding of the second video clip.
 9. The machine readablemedium of claim 8, wherein the first format is a native format at whicha sequence of images in the video clip was originally encoded and thesecond format is a non-native format that is different from said firstformat.
 10. The machine readable medium of claim 8, wherein the set ofinstructions for transcoding comprises a set of instructions forconverting the first video clip from a temporally compressed format to anon-temporally compressed format.
 11. The machine readable medium ofclaim 8, wherein the set of instructions for transcoding comprises: aset of instructions for decoding the interframe encoded video clip; anda set of instructions for encoding the decoded video clip using onlyintraframe encoding.
 12. The machine readable medium of claim 8, whereinthe first video clip that is at least partially interframe encodedincludes at least one video picture that is encoded by reference to adifferent video picture and the second video clip that is onlyintraframe encoded includes only video pictures that are encoded withoutreference to other video pictures.
 13. The machine readable medium ofclaim 8, wherein a time to transfer the second video clip is relatedonly to a size of the second video clip and a speed of the connectionbetween the video camera and the device.
 14. The machine readable mediumof claim 8, wherein a time to transfer the second video clip is relatedto a size of the second video clip and a speed of the connection betweenthe video camera and the device and is not related to a transcodingspeed of the device and a playback speed of the video clip. 15-29.(canceled)